-- Diese Testdatei demonstriert die definition von Funktionen
-- Main Funtionen
DEF MAIN:bool   == true
DEF MAIN:bool   == false

DEF MAIN:nat    == 0
DEF MAIN:nat    == 1

-- Beispiele mit Parameter
DEF funktionOhneParameter():nat == 1
DEF funktionMit1Parameter(X:nat):nat == 1
DEF funktionMit2Parameter(X:nat, X:nat):nat == 2
DEF funktionMit3Parameter(X:nat, X:nat, X:nat):nat == 3
DEF funktionMit4Parameter(X:nat, X:nat, X:nat, X:nat):nat == 4
DEF funktionMit5Parameter(X:nat, X:nat, X:nat, X:nat, X:nat):nat == 5
DEF funktionMit6Parameter(X:nat, X:nat, X:nat, X:nat, X:nat, X:nat):nat == 6
DEF funktionMit7Parameter(X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat):nat == 7
DEF funktionMit8Parameter(X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat):nat == 8
DEF funktionMit9Parameter(X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat):nat == 9
DEF funktionMit10Parameter(X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat, X:nat):nat == 10

-- Allg. Funktionenen
DEF add(X:nat, Y:nat):nat   == 1
DEF sub(X:nat, Y:nat):nat   == 2
DEF mul(X:nat, Y:nat):nat   == 3
DEF div(X:nat, Y:nat):nat   == 4
DEF eq(X:nat, Y:nat):bool   == true
DEF lt(X:nat, Y:nat):bool   == false
DEF and(X:bool, Y:bool):bool    == true
DEF or(X:bool, Y:bool):bool     == true
DEF not(X:bool):bool        == true

-- Check functioncall as righthandsight(lhs)
    -- No Arguments
        DEF id1():nat == id()
    -- Arguments on LHS
        DEF id2(arg1:bool):nat == id()
        DEF id3(arg1:bool, arg2:nat):nat == id()
        DEF id4(arg1:bool, arg2:nat, arg3:bool):nat == id()
    -- Arguments on RHS
        DEF id2():nat == id(true)
        DEF id6():nat == id(false, true)
        DEF id7():nat == id(false, 2, true)
    -- Arguments on both Sides
        DEF id(arg1:nat):nat == id(0, false, true, 10)
        DEF id(arg1:bool, arg2:nat, arg3:bool):bool == id(false, 10, 12, true)


